package rpcx_label_center

import (
	"time"

	"github.com/qida/gohp/timex"
)

// 设备标签绑定关系

// 请求 创建
type ReqCreateRecLabelDevice struct {
	DeviceId   string    `json:"DeviceId"`          //设备编码(国标Id)
	DeviceApn  string    `json:"DeviceApn"`         //设备接入点(国标Id)
	ChannelId  int64     `json:"ChannelId"`         //通道Id，设备为NVR时= -1
	LabelId    int64     `json:"LabelId"`           //标签Id
	LabelValue string    `json:"LabelValue"`        //标签值内容
	TimeStart  time.Time `json:"TimeStart"`         //标签关系启用时间
	TimeEnd    time.Time `json:"TimeEnd,omitempty"` //标签关系终止时间

	Log Log `json:"Log,omitempty"` //追踪日志
}

// 请求 删除
type ReqDeleteRecLabelDevice struct {
	DeviceId   string    `json:"DeviceId"`          //设备编码(国标Id)
	DeviceApn  string    `json:"DeviceApn"`         //设备接入点(国标Id)
	ChannelId  int64     `json:"ChannelId"`         //通道Id，设备为NVR时= -1
	LabelId    int64     `json:"LabelId"`           //标签Id
	LabelValue string    `json:"LabelValue"`        //标签值内容
	TimeStart  time.Time `json:"TimeStart"`         //标签关系启用时间
	TimeEnd    time.Time `json:"TimeEnd,omitempty"` //标签关系终止时间

	Log Log `json:"Log,omitempty"` //追踪日志
}

// 请求 更新
type ReqUpdateRecLabelDevice struct {
	DeviceId   string    `json:"DeviceId"`          //设备编码(国标Id)
	DeviceApn  string    `json:"DeviceApn"`         //设备接入点(国标Id)
	ChannelId  int64     `json:"ChannelId"`         //通道Id，设备为NVR时= -1
	LabelId    int64     `json:"LabelId"`           //标签Id
	LabelValue string    `json:"LabelValue"`        //标签值内容
	Status     int8      `json:"Status"`            //状态（1正常,-10禁用）
	TimeStart  time.Time `json:"TimeStart"`         //标签关系启用时间
	TimeEnd    time.Time `json:"TimeEnd,omitempty"` //标签关系终止时间

	Log Log `json:"Log,omitempty"` //追踪日志
}

// 请求 查询
type ReqSearchRecLabelDevice struct {
	KeyWord     string    `json:"KeyWord,omitempty"`     //全局关键词
	IsMore      bool      `json:"IsMore"`                //更多
	DeviceId    string    `json:"DeviceId"`              //设备编码(国标Id)
	DeviceApn   string    `json:"DeviceApn"`             //设备接入点(国标Id)
	ChannelId   int64     `json:"ChannelId"`             //通道Id，设备为NVR时= -1
	LabelId     int64     `json:"LabelId"`               //标签Id
	LabelValue  string    `json:"LabelValue"`            //标签值内容
	TimeStart   time.Time `json:"TimeStart"`             //标签标记开始时间
	TimeEnd     time.Time `json:"TimeEnd"`               //标签标记结束时间，默认2099年1月1日
	Page        int64     `json:"Page"`                  //必填 指定返回页码号
	Limit       int64     `json:"Limit"`                 //必填 指定返回每页条数
	FieldOrders []string  `json:"FieldOrders,omitempty"` //指定要排序的字段数组，默认升序，降序加前缀-，如 ["-Id", "Name"] 按Id降序Name升序排列

	Log Log `json:"Log,omitempty"` //追踪日志
}

// 请求 解绑
type ReqUnbindRecLabelDevice struct {
	DeviceId   string    `json:"DeviceId"`          //设备编码(国标Id)
	DeviceApn  string    `json:"DeviceApn"`         //设备接入点(国标Id)
	ChannelId  int64     `json:"ChannelId"`         //通道Id，设备为NVR时= -1
	LabelId    int64     `json:"LabelId"`           //标签Id
	LabelValue string    `json:"LabelValue"`        //标签值内容
	TimeStart  time.Time `json:"TimeStart"`         //标签关系启用时间
	TimeEnd    time.Time `json:"TimeEnd,omitempty"` //标签关系终止时间

	Log Log `json:"Log,omitempty"` //追踪日志
}

// 响应 单一对象
type RespRecLabelDevice struct {
	DeviceId   string         `json:"DeviceId"`          //设备编码(国标Id)
	DeviceApn  string         `json:"DeviceApn"`         //设备接入点(国标Id)
	ChannelId  int64          `json:"ChannelId"`         //通道Id，设备为NVR时= -1
	LabelId    int64          `json:"LabelId"`           //标签Id
	LabelName  string         `json:"LabelName"`         //标签名称
	LabelValue string         `json:"LabelValue"`        //标签值内容
	Status     int8           `json:"Status"`            //状态 正常:10 删除:-10
	TimeStart  time.Time      `json:"TimeStart"`         //标签关系启用时间
	TimeEnd    time.Time      `json:"TimeEnd,omitempty"` //标签关系终止时间
	TimeCreate time.Time      `json:"TimeCreate"`        //记录创建时间
	TimeUpdate timex.TimeNull `json:"TimeUpdate"`        //记录更新时间
}

// 响应 查询列表
type RespRecLabelDevices struct {
	Total           int64                `json:"Total"`           //返回列表的总条数
	RecLabelDevices []RespRecLabelDevice `json:"RecLabelDevices"` //返回列表对象
}
